Micron Document
`:top
`!Swing`! est une `F33f`_`[bibliothèque graphique`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Bibliothèque_graphique]`_`f pour le `F33f`_`[langage de programmation Java`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_(langage)]`_`f, faisant partie du package `F33f`_`[Java Foundation Classes`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_Foundation_Classes]`_`f (JFC), inclus dans `F33f`_`[J2SE`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=J2SE]`_`f. Swing constitue l'une des principales évolutions apportées par `F33f`_`[Java 2`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java_2]`_`f par rapport aux versions antérieures.

Swing offre la possibilité de créer des `F33f`_`[interfaces graphiques`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Graphical_user_interface]`_`f identiques quel que soit le `F33f`_`[système d'exploitation`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Système_d'exploitation]`_`f sous-jacent, au prix de performances moindres qu'en utilisant `F33f`_`[Abstract Window Toolkit`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Abstract_Window_Toolkit]`_`f (AWT). Il utilise le principe `F33f`_`[Modèle-Vue-Contrôleur`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Modèle-Vue-Contrôleur]`_`f (MVC, les composants Swing jouent en fait le rôle de la vue au sens du `F33f`_`[MVC`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Modèle-Vue-Contrôleur]`_`f) et dispose de plusieurs choix d'apparence pour chacun des composants standards.

Avec l'apparition de Java 8 en mars 2014, `F33f`_`[JavaFX`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=JavaFX]`_`f devient la bibliothèque graphique officielle du langage Java, pour toutes les sortes d'application (applications mobiles, applications sur poste de travail, `F33f`_`[applications Web`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Application_web]`_`f), le développement de son prédécesseur Swing étant abandonné (sauf pour les corrections de bogues).

>>Contents

• `F0af`_`[Relation avec AWT`#relation-avec-awt]`_`f
• `F0af`_`[Exemple`#exemple]`_`f
• `F0af`_`[Annexes`#annexes]`_`f
• `F0af`_`[Articles connexes`#articles-connexes]`_`f
• `F0af`_`[Liens externes`#liens-externes]`_`f
• `F0af`_`[Notes et références`#notes-et-r-f-rences]`_`f
• `F0af`_`[Références`#r-f-rences]`_`f

-─

>>Relation avec AWT

Depuis les premières versions de Java, `F33f`_`[Abstract Window Toolkit`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Abstract_Window_Toolkit]`_`f (AWT) fournit une API indépendante du système d'exploitation pour mettre en œuvre des composants graphiques. Dans AWT, chaque composant est dessiné et contrôlé par un composant tiers natif spécifique au système d'exploitation. C'est pourquoi les composants d'AWT sont appelés `*composants lourds`*.

Au contraire, les composants Swing sont décrits comme `*légers`*. En effet, ils ne requièrent pas d'allocation de ressources natives de la part du `F33f`_`[gestionnaire de fenêtres`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Gestionnaire_de_fenêtres]`_`f sous-jacent, mais « empruntent » les ressources de leurs ancêtres.

Une grande partie de l'API Swing est une extension complémentaire à AWT plutôt qu'un remplaçant direct. L'affichage est fourni par `F33f`_`[Java2D`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Java2D]`_`f, un autre composant des JFC. Cependant, l'usage conjoint de composants légers et lourds au sein d'une même fenêtre est généralement déconseillé à cause de problèmes de gestion de la profondeur`:cite-ref-mixing-1-0[`F5bf`_`[1`#cite-note-mixing-1]`_`f].

>>Exemple

Le programme suivant est un `F33f`_`[hello world`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Hello_world]`_`f en Swing :

`B100`F9d9import javax.swing.JFrame;`f`b
`B100`F9d9import javax.swing.JLabel;`f`b
`B100`F9d9`f`b
`B100`F9d9public class HelloWorld {`f`b
`B100`F9d9 public static void main(String[] args) {`f`b
`B100`F9d9 // on crée une fenêtre dont le titre est "Hello World!"`f`b
`B100`F9d9 JFrame frame = new JFrame("Hello World!");`f`b
`B100`F9d9 // la fenêtre doit se fermer quand on clique sur la croix rouge`f`b
`B100`F9d9 frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);`f`b
`B100`F9d9`f`b
`B100`F9d9 // on ajoute le texte "Hello, World!" dans la fenêtre`f`b
`B100`F9d9 frame.getContentPane().add(new JLabel("Hello, World!"));`f`b
`B100`F9d9`f`b
`B100`F9d9 // on demande d'attribuer une taille minimale à la fenêtre`f`b
`B100`F9d9 // (juste assez pour voir tous les composants)`f`b
`B100`F9d9 frame.pack();`f`b
`B100`F9d9 // on centre la fenêtre`f`b
`B100`F9d9 frame.setLocationRelativeTo(null);`f`b
`B100`F9d9 // on rend la fenêtre visible`f`b
`B100`F9d9 frame.setVisible(true);`f`b
`B100`F9d9 }`f`b
`B100`F9d9}`f`b

>>Annexes

>>>Articles connexes

• `F33f`_`[AWT`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Abstract_Window_Toolkit]`_`f
• `F33f`_`[SWT`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=Standard_Widget_Toolkit]`_`f et son complément `F33f`_`[JFace`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=JFace]`_`f
• `F33f`_`[JavaFX`:/page/wikibook/entry.mu`zim=wikipedia_fr_all_nopic_2025-10.zim|entry_path=JavaFX]`_`f

>>>Liens externes

• (en) Documentation de l'API
• (en) Architecture de Swing

>>Notes et références

>>>Références

`:cite-note-mixing-1`!1.`! `F0af`_`[↑`#cite-ref-mixing-1-0]`_`f (en) `*Mixing heavy and light components - Sun Developer Network`*.

• Portail des logiciels libres
• Portail de la programmation informatique

`c`F0af`_`[↑ Back to top`#top]`_`f`a